package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionarioafastamento;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.rhmi.FuncionarioAfastamento;


@Path("funcionariosafastamentos")
public class FuncionarioAfastamentoRestAdapter extends SpringBeanAutowiringSupport {


	@Autowired
	private FuncionarioAfastamentoEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<FuncionarioAfastamento> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("/id/{idFuncionarioAfastamento}")
	@Produces({MediaType.APPLICATION_JSON})
	public FuncionarioAfastamento recuperarPorIdFuncionarioAfastamento(@PathParam("idFuncionarioAfastamento")Long idFuncionarioAfastamento){
		return service.recuperarPorIdFuncionarioAfastamento(idFuncionarioAfastamento);
	}
	
	@GET
	@Path("/funcionario/{funcionario}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorFuncionario(@PathParam("funcionario")Long funcionario){
		return service.recuperarPorFuncionario(funcionario);
	}
	
	@GET
	@Path("/tipoafastamento/{tipoAfastamento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorTipoAfastamento(@PathParam("tipoAfastamento")Long tipoAfastamento){
		return service.recuperarPorTipoAfastamento(tipoAfastamento);
	}
	
	@GET
	@Path("/cargo/{funcionarioCargo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorFuncionarioCargo(@PathParam("funcionarioCargo")Long funcionarioCargo){
		return service.recuperarPorFuncionarioCargo(funcionarioCargo);
	}
	
	@GET
	@Path("/datainicio/{dtInicio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorDtInicio(@PathParam("dtInicio")Date dtInicio){
		return service.recuperarPorDtInicio(dtInicio);
	}
	
	@GET
	@Path("/datatermino/{dtTermino}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorDtTermino(@PathParam("dtTermino")Date dtTermino){
		return service.recuperarPorDtTermino(dtTermino);
	}
	
	@GET
	@Path("/vencimento/{stVencimento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorStVencimento(@PathParam("stVencimento")String stVencimento){
		return service.recuperarPorStVencimento(stVencimento);
	}
	
	@GET
	@Path("/registro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioAfastamento> recuperarPorStRegistro(@PathParam("stRegistro")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
}
